import VNode from "./VNode";
import createElement from "./createElement";
import patchVnode from "./patchVnode";
export default function patch(oldVNode, newVNode) {
    console.log()
    // 判断旧节点是否为DOM还是虚拟DOM

    // 若为DOM,将DOM包装成为虚拟DOM
    if(oldVNode.sel == '' || oldVNode.sel == null) {
        oldVNode = VNode(oldVNode.tagName.toLocaleLowerCase(),{}, [], undefined, oldVNode)
    }

    // 判断新DOM与旧DOM是否为同一dom  从key以及选择器比较

    // 是同一dom，则精细化比较
    if(oldVNode.key == newVNode.key && oldVNode.sel == newVNode.sel){
        console.log('是同一dom,将精细化比较')
        patchVnode(oldVNode,newVNode)
    } else {
        // 作用就是新dom替换旧dom
        console.log('不是同一dom，将暴力拆除')
        let newVNodeEL = createElement(newVNode) // 在旧节点前插入新内容
        if(newVNodeEL){
            oldVNode.elm.parentNode.insertBefore(newVNodeEL,oldVNode.elm)   // 插入新的节点
        } else {
            oldVNode.elm.parentNode.removeChild(oldVNode.elm)
        }
    }
}
